package userInterfaces;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import managerBean.ElementoManagerBean;
import managerBean.UtenteManagerBean;
import model.Escursione;
import model.Hotel;
import model.UtenteRegistrato;
import model.Volo;


@ManagedBean(name="ElementoManagedBean")
@ViewScoped
public class ElementoManagedBean {
	
	@EJB
	private ElementoManagerBean elMgrBean;
	
	private List<Volo> voli;
	private List<Hotel> hotels;
	private List<Escursione> escursioni;
	
	private String cerca;
	
	private Volo voloCorrente= new Volo();
	private Hotel hotelCorrente= new Hotel();
	private Escursione escursioneCorrente= new Escursione();
	
	private String data="yyyymmgg";
	private Date dataCorrente;
	private Date todayDate= new Date();
	
	public Date getTodayDate() {
		return todayDate;
	}



	public void setTodayDate(Date todayDate) {
		this.todayDate = todayDate;
	}



	public ElementoManagedBean() {
		super();
		this.voli = new ArrayList<Volo>();
		this.hotels = new ArrayList<Hotel>();
		this.escursioni = new ArrayList<Escursione>();
		this.cerca = "inserisci nome";
	}
	
	

	public Hotel getHotelCorrente() {
		return hotelCorrente;
	}



	public void setHotelCorrente(Hotel hotelCorrente) {
		this.hotelCorrente = hotelCorrente;
	}



	public Escursione getEscursioneCorrente() {
		return escursioneCorrente;
	}



	public void setEscursioneCorrente(Escursione escursioneCorrente) {
		this.escursioneCorrente = escursioneCorrente;
	}



	public String getData() {
		return data;
	}



	public void setData(String data) {
		this.data = data;
	}



	public Volo getVoloCorrente() {
		return voloCorrente;
	}



	public Date getDataCorrente() {
		return dataCorrente;
	}



	public void setDataCorrente(Date dataCorrente) {
		this.dataCorrente = dataCorrente;
	}



	public void setVoloCorrente(Volo voloCorrente) {
		this.voloCorrente = voloCorrente;
	}
	
	public void modificaVoloCorrente(Volo voloCorrente) throws IOException {
		this.setVoloCorrente(voloCorrente);
		FacesContext.getCurrentInstance().getExternalContext().dispatch("./modificaVolo.xhtml");
	}
	
	public void modificaHotelCorrente(Hotel hotelCorrente) throws IOException {
		this.setHotelCorrente(hotelCorrente);
		FacesContext.getCurrentInstance().getExternalContext().dispatch("./modificaHotel.xhtml");
	}
	
	public void modificaEscursioneCorrente(Escursione escursioneCorrente) throws IOException {
		this.setEscursioneCorrente(escursioneCorrente);
		FacesContext.getCurrentInstance().getExternalContext().dispatch("./modificaEscursione.xhtml");
	}
	
	



	public List<Volo> getVoli() {
		return voli;
	}

	public void setVoli(List<Volo> voli) {
		this.voli = voli;
	}

	public List<Hotel> getHotels() {
		return hotels;
	}

	public void setHotels(List<Hotel> hotels) {
		this.hotels = hotels;
	}

	public List<Escursione> getEscursioni() {
		return escursioni;
	}

	public void setEscursioni(List<Escursione> escursioni) {
		this.escursioni = escursioni;
	}

	public String getCerca() {
		return cerca;
	}

	public void setCerca(String cerca) {
		this.cerca = cerca;
	}
	
	public void visualizzaVoli(){
		this.voli=elMgrBean.visualizzaVoliMgr();
	}
	
	public void cercaVoli(){
		this.voli=elMgrBean.cercaVoliMgr(this.cerca);
	}
	
	public void visualizzaHotel(){
		this.hotels=elMgrBean.visualizzaHotelMgr();
	}
	
	public void cercaHotel(){
		this.hotels=elMgrBean.cercaHotelMgr(this.cerca);
	}
	
	public void cercaHotel(String prova){
		this.hotels=elMgrBean.cercaHotelMgr(prova);
	}
	
	public void visualizzaEscursioni(){
		this.escursioni=elMgrBean.visualizzaEscursioniMgr();
	}
	
	public void cercaEscursioni(){
		this.escursioni=elMgrBean.cercaEscursioniMgr(this.cerca);
	}
	
	public void rimuoviHotel(int idHotel){
		elMgrBean.rimuoviHotelMgr(idHotel);
		this.visualizzaHotel();
	}
	
	public void rimuoviVolo(int idVolo){
		elMgrBean.rimuoviVoloMgr(idVolo);
		this.visualizzaVoli();
	}
	
	public void rimuoviEscursione(int idEscursione){
		elMgrBean.rimuoviEscursioneMgr(idEscursione);
		this.visualizzaEscursioni();
	}
	
	public void updateVolo(Volo voloCorrente) throws ParseException{
//		Date dataCorrente=new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(this.data);
		elMgrBean.updateVoloMgr(voloCorrente.getId(),dataCorrente,voloCorrente.getLuogoPartenza(),voloCorrente.getLuogoDestinazione(),voloCorrente.getNumeroPosti(),voloCorrente.getDescrizione(),voloCorrente.getPrezzo());
	}
	
	public void updateHotel(Hotel hotelCorrente) throws ParseException{
//		Date dataCorrente=new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(this.data);
		elMgrBean.updateHotelMgr(hotelCorrente.getId(), dataCorrente, hotelCorrente.getNome(), hotelCorrente.getIndirizzo(), hotelCorrente.getNumeroPosti(), hotelCorrente.getDescrizione(),hotelCorrente.getPrezzo());
	}
	
	public void updateEscursione(Escursione escursioneCorrente) throws ParseException{
//		Date dataCorrente=new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(this.data);
		elMgrBean.updateEscursioneMgr(escursioneCorrente.getId(), dataCorrente, escursioneCorrente.getIndirizzo(), escursioneCorrente.getNumeroPosti(), escursioneCorrente.getDescrizione(),escursioneCorrente.getPrezzo());
	}
	
	public void creaVolo(Volo voloCorrente) throws ParseException{
//		Date dataCorrente=new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(this.data);
		elMgrBean.creaVoloMgr(dataCorrente,voloCorrente.getLuogoPartenza(),voloCorrente.getLuogoDestinazione(),voloCorrente.getNumeroPosti(),voloCorrente.getDescrizione(),voloCorrente.getPrezzo());
	}
	
	public void creaHotel(Hotel hotelCorrente) throws ParseException{
//		Date dataCorrente=new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(this.data);
		elMgrBean.creaHotelMgr(dataCorrente, hotelCorrente.getNome(), hotelCorrente.getIndirizzo(), hotelCorrente.getNumeroPosti(), hotelCorrente.getDescrizione(),hotelCorrente.getPrezzo());
	}
	
	public void creaEscursione(Escursione escursioneCorrente) throws ParseException{
//		Date dataCorrente=new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(this.data);
		elMgrBean.creaEscursioneMgr(dataCorrente, escursioneCorrente.getIndirizzo(), escursioneCorrente.getNumeroPosti(), escursioneCorrente.getDescrizione(),escursioneCorrente.getPrezzo());
	}

}
